https://www.kaggle.com/crawford/principle-component-analysis-gene-expression/

Datos usados para clasificar pacientes con acute myeloid leukemia (AML) and acute lymphoblastic leukemia (ALL).

Golub et al "Molecular Classification of Cancer: Class Discovery and Class Prediction by Gene Expression Monitoring"

There are two datasets containing the initial (training, 38 samples) and independent (test, 34 samples) datasets used in the paper. These datasets contain measurements corresponding to ALL and AML samples from Bone Marrow and Peripheral Blood. Intensity values have been re-scaled such that overall intensities for each chip are equivalent.

(1) Analysis steps

  1. Remove columns that contain "Call" data
  2. Transpose the dataframe so that each row is a patient and each column is a gene
  3. Remove gene description header and set the gene accession numbers as the column headers
  4. Split into train/test sets
  5. Scale values to zero mean and unit varaince

(2) Exploratory data analysis

Realiza un análisis exploratorio de los datos (correlaciones entre sí y con las clases, distribuciones,...). Usa las técnicas y gráficos que te parezcan más representativos.

En primer lugar conviene notar que nuestro conjunto de datos tiene un total de 7129 características, lo que convierte el problema en un problema de alta dimensión.

En segundo lugar vamos a observar si existen missing values en el conjunto de datos.

Como podemos observar, los datos están completos. A continuación codificamos cada clase de modo que {0: 'ALL', 1: 'AML'}.

Ahora vamos a seleccionar aquellas variables cuya correlación con la etiqueta 'cancer' sea superior en valor absoluto al 60%. Se representarán las matrices de correlación de la clase y los atributos seleccionados, así como los histogramas y los diagramas de clases correspondientes, de cada característica agrupado por clase.

En segundo lugar se muestra la matriz de correlación de las 85 características seleccionadas junto con la variable cancer.

Finalmente, se muestran los histogramas de cada característica agrupado por clases así como los diagramas de cajas.

Observamos que en cada histograma las clases se solapan y no presentan una distribución conocida. También puede observarse la presencia de outliers en algunas características.

(3) Principle Component Analysis

The analysis reveals that 21 principle components are needed to account for 80% of the variance. PC 1-3 add up to about ~33% and the rest is a slow burn where each component after PC8 contributes between 1-2% of the variance up until PC38 which is essentially zero. 1% is a decent amonut of variance and so the number of important PCs is up for interpretation.

Con 21 componentes se consigue un 80% de la varianza explicada.

Pregunta (1): ¿Qué pauta puede observarse en los valores de var_exp? ¿Cuál es la interpretación relativa de esos valores?

$\texttt{var_exp}$ es el vector que contiene la varianza total explicada por cada componente principal con respecto al conjunto. Vemos que cada vez la varianza explicada por cada componente principal es menor ya que las primeras componentes son las que maximizan la variabilidad de los datos.

Sea $\Sigma$ la matriz de covarianzas de los datos $X$ que queremos proyectar, la dirección de los componentes principales son los autovectores normalizados de $\Sigma$ correspondientes a los autovalores ordenador de mayor a menor. De manera que los autovalores $\lambda_1>\lambda_2>...$ de $\Sigma$ coinciden con la varianza de las proyecciones. Por tanto, las últimas componentes son aquellas cuyas proyecciones tienen menor varianza y eliminarlas no supone una gran pérdida de información.

Projection of first three components

The first three components only explain 33% of the variance but we'll go ahead plot the projection to get a visual of it.

Pregunta(2): Modificando la perspectiva de la figura con el ratón, ¿qué observas en cuanto a la separabilidad de las clases? Adjunta una imagen que apoye tus conclusiones.

En la imagen adjuntada, vemos que la separación de las clases es prácticamente lineal. pca_pregunta2

(4) Linear Discriminant Analysis

Realizar un análisis similar usando LDA, usando en este caso la información sobre el tipo de cancer de cada paciente. Puedes seguir la guía en https://www.apsl.net/blog/2017/07/18/using-linear-discriminant-analysis-lda-data-explore-step-step/

Es importante comentar que estamos trabajando con un problema de clasificación binaria y LDA utiliza una única componente ya que la dimensión del espacio vectorial en el que se proyectan los datos de entrenamiento es siempre menor o igual al número de clases. Por tanto, en la primera componente se explicará el 100% de la varianza del modelo y los datos se proyectarán en un vector normal al límite de decisión entre las dos clases.

A continuación se realiza un histograma de las clases proyectadas de manera unidimensional. Para los datos de entrenamiento transformados vemos la clara separación entre ambas clases. Sin embargo, los datos de prueba se solapan y no se consigue un buen rendimiento, como se vió en la salida anterior del score.

Otro análisis similar se puede realizar proyectando sobre la dirección LD1 los datos transformados de entrenamiento y prueba con LDA. De nuevo se observa la separación entre clases para los datos de entrenamiento proyectados y el solapamiento para los datos de prueba proyectados. En la gráfica, también se ilustran las medias para cada etiqueta.

(5) Clustering

Utiliza k-means clustering con los datos originales y con los datos proyectados con PCA y LDA. ¿Qué observas?

Aunque K means sea un algoritmo no supervisado, este problema es binario, por tanto, vamos a forzar a que el número de clúster del algoritmo sea igual a 2. Así, podremos probar la eficiencia de Kmeans y ver si las predicciones de cada punto coinciden con la etiqueta real.

K means con los datos originales

En primer lugar, se calcula la suma de los cuadrados de las distancias de los puntos desde sus respectivos centroides del clúster. Este valor, también llamado inertia, indica qué tan internamente coherentes son los clústeres

A continuación se realiza un análisis de siluetas. Este tipo de análisis sirve para estudiar la distancia de separación entre los clúster obtenidos y proporciona una forma de evaluar visualmente el número de clústers. Los coeficientes de silueta tienen un rango de $[-1,1]$ y los valores cercanos a $+1$ indican que la muestra está lejos de los clúster. Por su parte, un valor de 0 indica que la muestra está muy cerca de la frontera de decisión entre dos clúster. Finalmente, los valores negativos indican que esas muestras podrían haber sido asignadas al clúster equivocado.

Observando los resultados obtenidos vemos que tanto para los datos de prueba y entrenamiento, estos están muy cerca de la frontera de decisión de los dos clúster.

K means con PCA

Como los datos tiene una gran dimensionalidad, vamos a realizar Kmeans sobre las dos componentes que maximizaban la varianza de los datos de entrenamiento. Para poder interpretar el rendimiento de Kmeans con PCA se mostrará tanto el valor de inertia así como los puntos clasificados por Kmeans respecto a las clases reales.

Vemos como ha disminuido el parámetro inertia de nuestro nuevo clasificador que utiliza los datos proyectados en las dos componentes principales. A continuación, se representan las componentes etiquedas por Kmeans para los datos de entrenamiento y prueba. También se ilustran las matrices de confusión para ambos datos.

Tanto en los gráficos como en la matriz de confusión se ve claramente los verdaderos positivos y negativos, así como los errores de clasiciación, siendo mucho mayores para los datos de prueba.

Kmeans con LDA

De nuevo, se calcula el parámetro de inertia, se represenan los histogramas de los clúster proyectados en la componente de LDA así como la recta con los valores proyectados, y se calculan las matrices de confusión de las predicciones respecto a los valores reales.

En este caso, el parámetro de inertia es muy bajo, obteniendose un valor de $21.35$. Los histogramas representan claramente la separación entre clases, aunque recordemos que para el caso de los datos de prueba proyectados sobre la componente de LDA las clases continuaban solapadas. Finalmente, en la matriz de confusión se resumen los datos bien y mal clasificados de cada clase, habiéndose reducido considerablemente el número de falsos negativos para los datos de entrenamiento.